package com.pactera.madp.cp.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.pactera.madp.cp.api.dto.emp.EmployeeCustomerDataDTO;
import com.pactera.madp.cp.api.dto.emp.EmployeeListDTO;
import com.pactera.madp.cp.api.dto.emp.EmployeeTendencyChartDTO;
import com.pactera.madp.cp.api.dto.emp.SidebarEmpDto;
import com.pactera.madp.cp.api.entity.WorkEmployeeStatisticEntity;
import com.pactera.madp.cp.api.vo.employee.*;

import java.util.List;
import java.util.Set;

/**
 * @author: yangpengwei
 * @time: 2021/3/16 5:01 下午
 * @description 员工统计
 */
public interface IWorkEmployeeStatisticService extends IService<WorkEmployeeStatisticEntity> {

    EmployeeCustomerDataVO getCustomerData(EmployeeCustomerDataDTO dto);

    EmployeeCustomerDataVO getCustomerDataByDept(EmployeeCustomerDataDTO dto, Integer deptId, Integer wxDeptId);

    EmployeeCustomerDataVO getCustomerDataByUser(EmployeeCustomerDataDTO dto, String mobile);

    EmployeeStatisticsDataVO getStatisticsData(EmployeeCustomerDataDTO dto, Set<Integer> employeeIds);

    EmployeeStatisticsDataVO getStatisticsDatas(EmployeeCustomerDataDTO dto, Integer deptId, Integer wxDeptId);

    EmployeeStatisticsDataVO getStatisticsDatas(EmployeeCustomerDataDTO dto, String mobile);

    EmployeeCustomerDataXYVO getTop10Employee();

    // 消息趋势图
    List<EmployeeStaticsTendencyVO> getTendencyChart(EmployeeTendencyChartDTO dto);

    List<EmployeeStaticsTendencyVO> getMessageCount(EmployeeTendencyChartDTO dto);

    // 成员总数趋势图
    List<EmployeeStaticsTendencyVO> getEmpTotal(EmployeeTendencyChartDTO dto);

    // 在职成员趋势图
    List<EmployeeStaticsTendencyVO> getEmpOnTotal(EmployeeTendencyChartDTO dto);

    // 离职成员趋势图
    List<EmployeeStaticsTendencyVO> getEmpLeaveTotal(EmployeeTendencyChartDTO dto);

    // 客户总数趋势图
    List<EmployeeStaticsTendencyVO> getContactTotal(EmployeeTendencyChartDTO dto);

    // 流失客户数趋势图
    List<EmployeeStaticsTendencyVO> getContactLossTotal(EmployeeTendencyChartDTO dto);

    // 客群数量趋势图
    List<EmployeeStaticsTendencyVO> getRoomTotal(EmployeeTendencyChartDTO dto);

    Page<List<EmployeeListVO>> getEmployeeList(EmployeeListDTO dto, Page page);

    EmployeeDetailsVO getDetails(Integer employeeId);

    List<EmployeeContactListVO> getContactList(Integer employeeId);

    Page<EmployeeTendencyChartVO> getPageList(EmployeeTendencyChartDTO dto,Page page);

    // 经理视图新增客户趋势图
    List<SidebarEmpTendencyVo> contactAdd(Integer employeeId, SidebarEmpDto dto);

    // 经理视图新增客户趋势图
    List<SidebarEmpTendencyVo> contactAdd(Integer employeeId, Integer dateType);

    // 昨日联系客户数统计
    Integer contactEffectiveYesterday(Integer employeeId);

}
